"""
@author: xxw
@file: 01.日志.py
@time: 2023/6/8 14:42
"""
# 日志：记录软件运行中发生的事情
# 程序调试、排错、用户行为分析

# python里处理日志的模块 是  logging模块
# 五个日志等级
# 日志等级    数值表示              描述
# DEBUG        10     最详细的日志信息，开发过程中用于诊断问题
# INFO         20     详细日志信息，记录关键节点的信息
# WARNING      30(默认)   当前不期望的事情发生
# ERROR        40       发生错误的问题导致某些功能不能正常使用
# CRITICAL     50       发生严重错误，导致程序不能继续运行

# import logging
# log_format = "%(asctime)s|%(filename)s|%(levelname)s:%(message)s"
#
# logging.basicConfig(level=logging.DEBUG,format=log_format)
# logging.debug("this is debug")
# logging.info("this is info")
# logging.warning("this is warning")
# logging.error("this is error")

# logging日志的四大组件
# 日志器 logger -- 用来记录日志
# 处理器 handler  -- 用来指定输出
# 过滤器 filter
# 格式器 formatter

import logging
from logging import FileHandler, StreamHandler
from logging.handlers import TimedRotatingFileHandler, RotatingFileHandler

# 得到一个日志器，日志器用来记录日志
logger = logging.getLogger()

# 处理器
# 输出到文件
# fh = FileHandler("sc.log")

# 按照大小轮转
# fh = RotatingFileHandler("sc_bak.log", maxBytes=100, backupCount=2)

# 按时间轮转
fh = TimedRotatingFileHandler("sc_bak.log", when="S", interval=2, backupCount=2)

# 输出到屏幕
ch = StreamHandler()

# 格式器 -- 用来指定格式
log_format = "%(asctime)s|%(filename)s|%(levelname)s:%(message)s"
formatter = logging.Formatter(log_format)

# 绑定formatter 到handler上
fh.setFormatter(formatter)
ch.setFormatter(formatter)

# 将handler绑定到logger
logger.addHandler(fh)
logger.addHandler(ch)

logger.warning("this is warning")

import  time
for i in range(10):
    time.sleep(0.5)
    logger.warning(f"this is warning ..{i}")

# 日志层级关系，类似继承
# 没有传递参数，获取到的logger 称为 root logger
# logger = logging.getLogger()
# logger2 = logging.getLogger("sc")
# logger2.error("this is error logger2")

# logrotate

